struct f
{
    struct _
    {
    //app es un puente eager a app_matching   
    template<class p>   
    struct app:app_matching< typename p::value > {}; 

      //cada app_matching es un caso de matching
      template< class dummy_1>
      struct app_matching< ||p_1||, dummy_1>
      {
          struct _:  ||e_1||
          {
          typedef ||e_1||::value value;
          };
      };
   ................
      template< class dummy_N>
      struct app_matching< ||p_N||, dummy_N>
      {
          struct _:  ||e_N||
          {
          typedef ||e_N||::value value;
          };
      };
    };
};

